/**
 * @file MessageDataPackage.h
 * @author Karol Kulesza
 *  
 * Proponowana struktura klasy odpowiadającącej za obsługę pakietu z danymi otrzymanego 
 * od klienta. Przesyłanie danych od klienta do serwera nie jest częścią tego projektu
 * i nie jest w nim realizowane.
 */



#ifndef MESSAGEDATAPACKAGE_H_
#define MESSAGEDATAPACKAGE_H_

#include "../structures.h"
#include "../ClientController.h"
#include "MessageExecutor.h"

namespace tftp_server
{

/**
 * @class MessageDataPackage
 * Proponowana struktura klasy odpowiadającącej za obsługę pakietu z danymi otrzymanego 
 * od klienta. Przesyłanie danych od klienta do serwera nie jest częścią tego projektu
 * i nie jest w nim realizowane.  
 */
class MessageDataPackage: public tftp_server::MessageExecutor
{
	/**
	 * Clientcontroller obsługujący pobieranie pliku.
	 */
	ClientController *clientController;
	/**
	 * Otrzymany pakiet opakowujący dane.
	 */
	Package package;

public:
	/**
	 * Konstruktor klasy.
	 * @param clientController_ - Clientcontroller obsługujący wysyłanie pliku. 
	 * @param package_ - otrzymany pakiet.
	 */
	MessageDataPackage(ClientController *clientController_, Package package_);

	/**
	 * Destruktor klasy
	 */
	~MessageDataPackage();
	
	/**
	 * Metoda obsługująca otrzymany pakiet z danymi.
	 */
	void execute() const;
};

}


#endif /* MESSAGEDATAPACKAGE_H_ */
